1. Field of the Invention
The present invention relates to data communications and, more particularly, to managing download of progressive data for video and/or audio streams.
2. Description of the Related Art
Video streaming over communication networks has become more and more popular. In network video streaming, a client machine (such as a desktop or laptop computer or a Web-enabled mobile phone) receives a video stream from a video source over a network connection. The video stream generally includes video format data comprising graphic or image data as well as audio data. The video stream may comprise a video clip having content of a predetermined length, such as a movie or presentation, or the video stream may comprise an ongoing video feed of undetermined length, such as output from a Web cam or some other live signal feed. Several communication protocols have been developed and are standardized to enable streaming video transfer between video source and client machine, for example, protocols such as RTSP, RTMP, HTTP progressive download, MMS, and custom protocols. Among these, progressive download streaming of videos has become very popular.
In HTTP progressive download, reproduction or playback of the video data stream begins after an initial file download using the HTTP protocol is received at the client end. The initial file comprises a portion of the video stream, and is followed by download of subsequent file content corresponding to subsequent portions of the video stream. As the file content is downloaded, the video playback proceeds after receiving a few seconds worth of video data from the video stream, without waiting until the entire video stream has been received. The subsequent file content comprising the remaining video is downloaded, decoded, and rendered for playback. There has been tremendous demand for video viewing on the Internet and that viewing demand has in turn increased demands on wireless network resources due to ubiquitous coverage and mobile users consuming video everywhere service is available. Consequently the popularity of video streaming causes overloading of bandwidth-limited networks, especially radio frequency (RF) wireless networks such as, for example, cellular data networks, WiFi networks, satellite networks, and the like.
The underlying Internet network protocol used for video progressive streaming is Transmission Control Protocol (TCP) or User Datagram Protocol (UDP). In recent years, the network transfer protocol used for delivery of Internet traffic over all types of networks, including RF wireless networks, is TCP, which is used in conjunction with the Internet Protocol (IP) and is often jointly referred to as TCP/IP. TCP provides reliable, ordered, error-free delivery of a stream of bytes from a program on one computer to a program on another computer. The bytes being transferred are typically organized into packets that are routed over the network using the IP protocol. The TCP protocol has mechanisms for packet flow control, retransmission in case of packet loss, segment size, network congestion avoidance, and session control, e.g., establishment and termination.
Due to factors such as network congestion, traffic load balancing, switch memory overflow, physical link layer loss, or other unpredictable network behavior, IP packets can be lost, or delivered out of order at the receiving client. These add to processing operations at the client and can result in choppy video on playback. The receiving TCP stack detects data packet loss and/or delay problems, requests retransmission of lost packets, and rearranges out-of-order packets into the proper packet order for display. The sending TCP stack also tries to reduce network congestion, to reduce the occurrence of the other problems mentioned above, by packet flow control. Packets comprise collections of bytes of data in a contiguous PDU or Protocol Data Unit. For TCP/IP, the PDU is defined as a TCP segment this determines the maximum number of bytes in a PDU transported over the network. Once the receiving TCP Stack, which is part of the machine's operating system kernel, has reassembled a perfect copy of the stream of data packets originally transmitted it passes that stream data to the application program of the client machine for playback.
TCP is optimized for accurate delivery rather than for timely delivery, and therefore, TCP processing sometimes incurs relatively long delays (on the order of hundreds of milliseconds) while waiting for proper sequencing of out-of-order segments or retransmission of lost segments. Delays in the reception of packets can cause underflow of the video player at the client, resulting in stalled or choppy playback.
Wireless network links are known to experience sporadic and usually temporary packet losses due to communication artifacts such as fading, shadowing, hand-off, and other radio effects, as well as network congestion. The sending TCP will react to such losses with network back-off operations utilizing a congestion window. After the back-off of the congestion window size, TCP can enter a congestion avoidance phase with a conservative decrease in window size. This congestion avoidance phase results in reduced throughput. Because of the sporadic nature of TCP throughput in wireless networks, consistent delivery of video content requires the adaption of the content rate to the effective network rate for stall free playback.
Progressive download results in an aggressive (i.e., as fast as possible) download of video from the HTTP server over the network. This is another source of network inefficiency in the case of a user selecting a video for download, watching a short portion of the video, and then stopping the video. Since the progressive download transmits the video stream as quickly as possible, unviewed content may be transmitted over the network and accumulated at the client machine, only to be discarded if the user at the client device stops watching the video. This wastes valuable network bandwidth and resources.
HTTP Progressive download using TCP is the predominant use case over the Internet because of pervasive support of this video delivery through computer players such as the Adobe FLASH™ player, Microsoft SILVERLIGHT™ player, and Apple QUICKTIME™ player, and through other playback devices. When transporting video or other streamed data over a network, TCP merely uses as much of the network's bandwidth as the TCP protocol allows. If the network has a bandwidth that is higher than the rate at which TCP is sending the data, no indication of available network bandwidth can be obtained using TCP.
Improved methods of estimating the bandwidth available over wired and/or wireless networks allow a variable rate download system to more effectively manage download of the content streams.